<?php
/**
* @package   auto_occasion
* @subpackage essais
* @author    your name
* @copyright 2011 your name
* @link      http://www.yourwebsite.undefined
* @license    All rights reserved
*/

class BoModeleCtrl extends jController {
    
   public $pluginParams = array(
                                    '*'=>array('auth.required'=>true,
                                    'jacl2.right'=>'admin.compte.gerer'
                                    )
                            );
    
    /**
    *
    */
    function index() {
        
        jClasses::inc('essais~essaisSrv') ;
        jClasses::inc('commun~common') ;
        
        $iTypeId = $this->intParam('iTypeId') ;
        $iEssaiId = $this->intParam('iId') ;

        $rep = $this->getResponse('html');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.core.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.widget.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.mouse.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.sortable.js');
        $rep->menusActifs = adminHtmlResponse::MENU_FICHES_MODELES ;
        $toParams = array() ;
      

        $toParams['iTypeId'] = $iTypeId ;
        $toParams['oEssai'] = ($iEssaiId) ? essaisSrv::getById($iEssaiId) : common::init('ao_essais') ;
        $filename = JELIX_APP_WWW_PATH . PATH_ESSAI_CHAPEAU . $toParams['oEssai']->ess_zChapeau;
        if (file_exists($filename) && strpos($toParams['oEssai']->ess_zChapeau, ".txt") !== false) {
            jClasses::inc('commun~toolsFile');
            $toParams['oEssai']->ess_zChapeau = toolsFile::get($filename);
        }

        //création repertoire  si n'existe pas et copie fichiers source dans cee répertoire créé
        essaisSrv::getDirectory($toParams['oEssai']->ess_iMarqueId, $toParams['oEssai']->ess_iModelId,'Modeles',$toParams['oEssai']->ess_zVersion);

        $marque = common::chargeParId($toParams['oEssai']->ess_iMarqueId, "ao_marque");
        $modele = common::chargeParId($toParams['oEssai']->ess_iModelId, "ao_modele");

        $name = 'Modeles/'.$marque->marque_libelle.'/'.$modele->modele_libelle.'-'.$toParams['oEssai']->ess_zVersion;
        $path = PATH_ESSAI_MIN.$name;
        
        $rep->bodyTpl = 'essais~BoModeleList';
        $rep->body->assignZone ('oZoneModeleLeft', 'essais~BoModeleLeft', array('iId' => $iEssaiId)) ;
        $rep->body->assign($toParams) ;
        $rep->body->assign('path_img',$path) ;
        
        return $rep;
    }
    
 
    /**
    * Affiche la gestion des chapitres
    */
    function chapitre() {

        // type = 1 chapitre =2 meilleure version
        $iTypeId                = $this->intParam('iTypeId', 1) ;
        $iEssaiId               = $this->intParam('iId') ;
        $chap_name_id           = $this->intParam('chap_name_id',0) ;
        $type                   = $this->intParam('type') ;
        $chap_modele            = $this->intParam('idGammeModele') ;
        $ttl                    = $this->stringParam('ttl') ;
 
        jClasses::inc('essais~essaisSrv') ;
        jClasses::inc('essais~chapitreSrv') ;
        jClasses::inc('commun~common') ;
        
        $toParams['iTypeId']			= $iTypeId;
        $toParams['chapitre']			= ($chap_name_id) ? chapitreSrv::loadChapter($iEssaiId, $chap_name_id,$type) : array(common::init('ao_essais_chapitre')) ;
		
		if ($iEssaiId!=0) {
			$oEssai						= essaisSrv::getById($iEssaiId) ;
		}
		if (is_object ($oEssai) ) {
			$toParams['oEssai']			=  $oEssai ;
		}else {
			$toParams['oEssai']			=  common::init('ao_essais') ;
		}

        $toParams['chapitreTitre']		= chapitreSrv::getChapterTitre() ;
        //pour lister les chapitres autres que Habitacle&carros, Confort et comportement ...
        $toParams['chapitreAutre']		= chapitreSrv::getChapterOther() ;

        $toParams['chapImg']		= $toParams['chapitre'][0]->chap_img;
        $toParams['chap_modele']	= ($chap_modele)? $chap_modele : $toParams['chapitre'][0]->chap_modele;

        if ($toParams['chapitre'][0]->chap_content) {
            $content = $toParams['chapitre'][0]->chap_content;
            if($type =='1'){
                $filename			= JELIX_APP_WWW_PATH .PATH_ESSAI_SOUSRUBRIQUE . 'guide' . $iEssaiId . '/' . $content;
            }else{
                $filename			= JELIX_APP_WWW_PATH . PATH_ESSAI_VERSION . 'guide' . $iEssaiId . '/' . $content;
            }

            if (strpos($content, ".txt") !== false) {
                //récupération du contenu du fichier et le mettre dans la variable ess_zChapeau x :gamme-porsche-1019663438.txt
                jClasses::inc('commun~toolsFile');
                $toParams['chapitre'][0]->chap_content = toolsFile::get($filename);
            }
        }

        $rep						= $this->getResponse('html');
        $rep->menusActifs			= adminHtmlResponse::MENU_FICHES_MODELES ;

        $rep->bodyTpl				= 'essais~BoModeleChapitre'; 
        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/css/jquery-ui.css') ;
		$rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/css/ui.multiselect.css') ;
        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/front/css/infiniteCarousel.css') ;
        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/front/css/annonceDeposer.css') ;
        $rep->addCSSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/css/illustrationChapitres.css') ;

        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery-ui.min.js') ;
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/ajaxupload.3.5.js') ;
		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.localisation-min.js') ;
   		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/entreprise.js') ;
   		$rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/illustrationChapitres.js') ;
        
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/front/js/infiniteCarousel.js') ;
     
        $marque = common::chargeParId($toParams['oEssai']->ess_iMarqueId, "ao_marque") ;   
        $modele = common::chargeParId($toParams['oEssai']->ess_iModelId, "ao_modele") ;
		
		//On remplace les espaces dans le nom de la marque et nom du modele par un '_'
		$marque->marque_libelle = strtr($marque->marque_libelle,' ','_') ;
		$modele->modele_libelle = strtr($modele->modele_libelle,' ','_') ;
		
        $name = 'Modeles/'.$marque->marque_libelle.'/'.$modele->modele_libelle.'-'.$toParams['oEssai']->ess_zVersion;
        $path = PATH_ESSAI_MIN.$name;
        
        // photos  illustrations
        $photo =  array();
        jClasses::inc('commun~toolsFile') ;
        
         $toParams['photos'] = $photo ;

         if ($toParams['oEssai']->ess_iModelId == '0') $toParams['path'] = PATH_ESSAI_MIN . $marque->marque_libelle.$modele->modele_libelle.'_'.$toParams['oEssai']->ess_iMarqueId.'_';
         else $toParams['path']		= $path ;
         $toParams['photosPath']	= PATH_ESSAI . $name ;
        
        $rep->body->assign($toParams) ;
        $rep->body->assign('type', $type) ;
        $rep->body->assign('chap_name_id', $chap_name_id) ;
        $rep->body->assign('path_img',$path) ;
        $rep->body->assign('iTypeId',$iTypeId) ;
        $rep->body->assign('iEssaiId',$iEssaiId) ;
        $rep->body->assign('ttl',$ttl) ;
       
        if($iTypeId == 1 ){
            $rep->body->assignZone ('oZoneModeleLeft', 'essais~BoModeleLeft', array('iId' => $iEssaiId)) ;
        }else{
            $rep->body->assignZone ('oZoneModeleLeft', 'essais~BoGammeLeft', array('iId' => $iEssaiId)) ;
        }

        return $rep;
    }
     
     /**
    * Affiche la gestion des chapitres
    */
    function concurrence() {
        $rep = $this->getResponse('html');
        $rep->menusActifs = adminHtmlResponse::MENU_FICHES_MODELES ;
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jconfirmaction.jquery.ask.js');


        jClasses::inc('essais~essaisSrv') ;
        jClasses::inc('commun~common') ;
        jClasses::inc('marqueModele~marqueSrv') ;
        jClasses::inc('marqueModele~modeleSrv') ;

        $iTypeId = $this->intParam('iTypeId') ;
        $iEssaiId = $this->intParam('iId') ;
        $iConcurrenceId = $this->intParam('concurrenceId') ;


        $toParams['oEssai']               = ($iEssaiId) ? essaisSrv::getById($iEssaiId) : common::init('ao_essais') ;
        
        $toParams['toMarqueVoitures']     = marqueSrv::getAllByOrder() ;
        
        $toParams['toModelesVoitures']    = modeleSrv::getAll() ;

        $toParams['toRapportQualitePrix'] = common::liste('ao_concurrence_qualiteprix') ;
        $toParams['concurrence']    = ($iConcurrenceId) ? common::chargeParId($iConcurrenceId, 'ao_essais_concurrence') : common::init('ao_essais_concurrence') ;

        $rep->bodyTpl = 'essais~BoModeleConcurrence';

        $rep->body->assign($toParams) ;
        $rep->body->assignZone ('oZoneModeleLeft', 'essais~BoModeleLeft', array('iId' => $iEssaiId, 'sh'=>1)) ;
        $rep->body->assignZone ('listeConcurrence','essais~listeConcurrence',array('iId' => $iEssaiId));


        return $rep;
    }
     
    
    /**
    *
    */
    function gammes() {
        $rep = $this->getResponse('redirect');
        $rep->action = 'essais~BoFiches:index' ;
        $rep->params = array('iTypeId' => 2) ;

        return $rep;
    }
    
    /**
    *
    */
    function dossiers() {
        $rep = $this->getResponse('redirect');
        $rep->action = 'essais~BoFiches:index' ;
        $rep->params = array('iTypeId' => 3) ;

        return $rep;
    }
    
    /**
    *
    */
    function reOrder() {
        
        jClasses::inc('essais~essaisSrv') ;
        
        $postedParams = $this->params() ;
        // jLog::dump($postedParams) ;
        
        $rep = $this->getResponse('text') ;
        $rep->content = essaisSrv::reOrder($postedParams) ;

        return $rep;
    }
    
    /**
    *
    */
    function edit() {
        
        $rep = $this->getResponse('html') ;
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.core.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.widget.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.mouse.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.ui.sortable.js');
        $rep->addJSLink($GLOBALS['gJConfig']->urlengine['basePath'].'design/back/js/jquery.validate.min.js');
        
        jClasses::inc('essais~essaisSrv') ;
        jClasses::inc('commun~common') ;
        jClasses::inc('marqueModele~marqueSrv') ;
        jClasses::inc('marqueModele~modeleSrv') ;
        
        $iEssaiId = $this->intParam('iId') ;
        $toParams['oEssai'] = ($iEssaiId) ? essaisSrv::getById($iEssaiId) : common::init('ao_essais') ;
        $iTypeId = ($this->intParam('iTypeId')) ? $this->intParam('iTypeId') : $toParams['oEssai']->ess_iTypeId ;
        
        
        switch ($iTypeId) {
            case 1:
                $menusActifs = adminHtmlResponse::MENU_FICHES_MODELES ;
                $toParams['zLeftTitle'] = 'LES MOD&Egrave;LES' ;
                $toParams['zCenterTitle'] = 'Gestion des MOD&Egrave;LES' ;
                break;

            case 2:
                $menusActifs = adminHtmlResponse::MENU_FICHES_GAMMES ;
                $toParams['zLeftTitle'] = 'LES GAMMES' ;
                $toParams['zCenterTitle'] = 'Gestion des GAMMES' ;

                break;

            case 3:
                $menusActifs = adminHtmlResponse::MENU_FICHES_DOSSIERS ;
                $toParams['zLeftTitle'] = 'LES DOSSIERS' ;
                $toParams['zCenterTitle'] = 'Gestion des DOSSIERS' ;

                break;

            default:
                $menusActifs = adminHtmlResponse::MENU_FICHES_MODELES ;
                $toParams['zLeftTitle'] = 'LES MOD&Eacute;LES' ;
                $toParams['zCenterTitle'] = 'Gestion des MOD&Egrave;LES' ;
                
                break;
        }
        
        $toParams['iTypeId'] = $iTypeId ;
        $toParams['toFiches'] = essaisSrv::getAllFichesByTypeId($iTypeId) ;
        $toParams['toMarqueVoitures'] = marqueSrv::getAllByOrder() ;
        $iMarqueVoitureId = (isset ($toParams['oEssai']->ess_iMarqueId)) ? $toParams['oEssai']->ess_iMarqueId : 0 ;
        $toParams['toModelesVoitures'] = modeleSrv::getAllOrderedModeleByMarqueId($iMarqueVoitureId) ;
        $toParams['toCatVoitures'] = essaisSrv::getAllCatVoiture() ;
        $rep->menusActifs = $menusActifs ;
        $rep->bodyTpl = 'essais~BoFichesEdit';
        $rep->body->assign($toParams) ;

        return $rep;
    }
    
    /**
     * Sauvegarde en base des modifs d'essais
     */
    function save () {
        
        jClasses::inc('essais~essaisSrv') ;
        
        $toParams = $this->params() ;

        essaisSrv::store($toParams) ;
        
        $rep = $this->getResponse('redirect') ;
        $rep->action = 'essais~BoFiches:index' ;
        $rep->params = array('iTypeId' => $toParams['ess_iTypeId']) ;
        
        return $rep;
    }

   /**
     * Sauvegarde en base des modifs de chapitre
     */
    function saveChapitre () {
        
        jClasses::inc('essais~chapitreSrv');
        jClasses::inc('essais~essaisSrv');
        jClasses::inc('commun~common');

        $toParams = $this->params() ;
        if($toParams['chap_name_id']==0){
              $toParams['chap_name_id'] =  $toParams['chapNameId'];
        }

        $toParams['chap_img'] = implode(',',explode(',',$toParams['photo-annonce']));
		jLog::dump($toParams) ;
        // si autre , on enregistre le name du chapitre dans ao_chapitre_names
        if(!$toParams['chap_name_id'] && $toParams['chap_autre']) {
            //si chapitre
            if ($toParams['type']==1){
                $toParams['chap_name_id'] = chapitreSrv::saveChapitreName($toParams['chap_autre']);
            // si meilleure version
            }else{
                $toParams['chap_name_id'] = chapitreSrv::saveVersionName($toParams['chap_autre']);
            }
        }
        if (!$toParams['chap_id']) {
            $chapitreId = chapitreSrv::ajouter($toParams) ;
            chapitreSrv::insertEssaiChapitre($toParams['ess_id'], $chapitreId);
        } else {
            $chapitreId = chapitreSrv::modifier($toParams) ;
        }

        $rep = $this->getResponse('redirect') ;
        $rep->action = 'essais~BoModele:chapitre' ;
        $rep->params = array('iId' => $toParams['ess_id'],'type' => $toParams['type'],'chap_name_id' => $toParams['chap_name_id'],'iTypeId' => $toParams['iTypeId']) ;
        
        return $rep;
    }
    

     /**
     * Sauvegarde en base des modifs de concurrence
     */
    function saveConcurrence () {
        
        jClasses::inc('marqueModele~marqueSrv');
        jClasses::inc('marqueModele~modeleSrv');
        jClasses::inc('essais~concurrenceSrv');

        $toParams = $this->params();

        // on obtient le libelle de la marque par marque_id
        $marquebyid = marqueSrv::getById ($toParams['concur_marque_id']);
        $modelebyid = modeleSrv::getById ($toParams['concur_modele_id']);

        $toParams['concur_name'] =  $marquebyid->marque_libelle .' '. $modelebyid->modele_libelle;
        $toParams['concur_position'] = 0;
        
        if (!$toParams['concur_id']) {
            $concurrenceId = concurrenceSrv::ajouter($toParams) ;
        } else {
            $concurrenceId = concurrenceSrv::modifier($toParams) ;
        }

        $rep = $this->getResponse('redirect') ;

        $rep->action = 'essais~BoModele:concurrence' ;
        $rep->params = array('iId' => $toParams['iId']) ;
        
        return $rep;
    }

    /**
     * Renvir dynamiquement les modeles disponible correspondant à une marque
     *
     * @return type 
     */
    function ajaxGetModelByMarqueId () {
        
        $iMarqueId = $this->intParam('iMarqueId') ;
        
        jClasses::inc('marqueModele~modeleSrv') ;
        
        $rep = $this->getResponse('json') ;
        $rep->data = modeleSrv::getAllOrderedModeleByMarqueId($iMarqueId) ;
        
        return $rep;
    }

       /**
    *Fonction pour réordonner les concurrences 
    */
    function reOrderConcurrence() {
        
        jClasses::inc('essais~concurrenceSrv') ;

        $postedParams = $this->params() ;
        
        $rep = $this->getResponse('text') ;
        $rep->content = concurrenceSrv::reOrder($postedParams) ;

        return $rep;
    }

   /**
    *Fonction pour réordonner les chapitres
    */
    function reOrderChapitre() {
        
        jClasses::inc('essais~chapitreSrv') ;

        $postedParams = $this->params() ;
        
        $rep = $this->getResponse('text') ;
        $rep->content = chapitreSrv::reOrder($postedParams) ;

        return $rep;
    }

       /**
    *Fonction pour réordonner les meilleures versions
    */
    function reOrderVersion() {
        
        jClasses::inc('essais~chapitreSrv') ;

        $postedParams = $this->params() ;
        
        $rep = $this->getResponse('text') ;
        $rep->content = chapitreSrv::reOrderVersion($postedParams) ;

        return $rep;
    }


    /**
    * Supprime une concurrence de la liste à gauche
    */
    function supprConcurrence() {
        $rep = $this->getResponse('redirect');
        jClasses::inc('commun~common');

        $id  = $this->intParam('concur_id');
        $iId = $this->intParam('iId');

        common::supprimer($id, 'ao_essais_concurrence');

        $rep->action = 'essais~BoModele:index';
        $rep->params = array('iId' => $iId) ;
        return $rep;
    }

    /**
    * Supprime une concurrence sur la liste 
    */
    function supprConcurr() {
        $rep = $this->getResponse('redirect');
        jClasses::inc('commun~common');

        $id  = $this->intParam('concur_id');
        $iId = $this->intParam('iId');

        common::supprimer($id, 'ao_essais_concurrence');

        $rep->action = 'essais~BoModele:concurrence';
        $rep->params = array('iId' => $iId) ;
        return $rep;
    }
    /**
    * Supprime un chapitre
    */
    function supprChapitre() {
        $rep = $this->getResponse('redirect');
        jClasses::inc('commun~common');

        $chapId  = $this->intParam('chapId');
        $essaiId = $this->intParam('essaiId');
        $idLink  = $this->intParam('idLink');

        // suppression dans la table ao_essais_chapitre 
        common::supprimer($chapId, 'ao_essais_chapitre');
        $rep->action = 'essais~BoModele:index';
        $rep->params = array('iId' => $essaiId) ;
        return $rep;
    }
}

